package server;

import server.version.*;

/**
 * Created by louisyuu on 2020/4/1 下午4:57
 * <p>
 * <p>
 * 名称:Minicat
 * Minicat要做的事情:作为一个服务器软件提供服务的，
 * 也即我们可以通过浏览器客户端发送http请求， Minicat可以接收到请求进行处理，处理之后的结果可以返回浏览器客户端。
 * 1)提供服务，接收请求(Socket通信)
 * 2)请求信息封装成Request对象(Response对象)
 * 3)客户端请求资源，资源分为静态资源(html)和动态资源(Servlet) 4)资源返回给客户端浏览器
 * 我们递进式完成以上需求，提出V1.0、V2.0、V3.0版本的需求
 * <p>
 * V1.0需求:浏览器请求http://localhost:8080,返回一个固定的字符串到⻚面"Hello Minicat!"
 * <p>
 * V2.0需求:封装Request和Response对象，返回html静态资源文件
 * <p>
 * V3.0需求:可以请求动态资源(Servlet)
 */
public class Bootstrap {


    public static void main(String[] args) {
        Bootstrap bootstrap = new Bootstrap();
        try {
            bootstrap.start(6);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    private void start(int versionNumber) throws Exception {
        VersionStater stater = new VersionOneStarter();

        if (versionNumber == 1) {

        } else if (versionNumber == 2) {
            stater = new VersionTwoStarter();
        } else if (versionNumber == 3) {
            stater = new VersionThreeStarter();
        } else if (versionNumber == 4) {
            stater = new VersionThreeMultiThreadStarter();
        } else if (versionNumber == 5) {
            stater = new VersionThreeThreadPoolStarter();
        } else if (versionNumber == 6) {

            /**
             * Minicat version4.0
             */
            stater = new VersionFourStarter();
        } else if (versionNumber == 7) {
            stater = new VersionFiveStarter();
        }

        stater.start();

    }


}
